Amazon Lex คืออะไร? การแนะนำฟังก์ชันล่าสุดของ AWS ในปี 2023
1.)เริ่มต้น
สวัสดีครับ ครั้งนี้ผมจะมาแนะนำ "Amazon Lex" ซึ่งจะช่วยให้คุณสร้างอินเทอร์เฟซแบบโต้ตอบกับแอปพลิเคชันโดยใช้เสียงและข้อความกันครับ
โดยคุณสมบัติหลักๆของ Amazon Lex มีดังนี้ครับ
・สามารถสร้างแชทบอทแบบข้อความหรือเสียงได้ผ่าน management console
・สามารถเพิ่มอินเทอร์เฟซการสนทนาให้เข้ากับแอปพลิเคชันที่มีอยู่แล้วได้
・นักพัฒนาสามารถใช้งาน engine การสนทนาแบบเดียวกับ Amazon Alexa ได้
・รองรับฟังก์ชันขั้นสูงและความยืดหยุ่นสำหรับการเข้าใจภาษาธรรมชาติ (NLU) และการรู้จำเสียงพูดอัตโนมัติ (ASR)
・ไม่จำเป็นต้องมีความเชี่ยวชาญด้าน deep learning ในการสร้างบอท เพียงแค่ระบุ Flow การสนทนาเบื้องต้นผ่าน management console เท่านั้น
・ผสานกับ AWS Lambda เพื่อทำงานร่วมกับบริการอื่นๆของ AWS
・ไม่มีค่าใช้จ่ายเริ่มต้นหรือค่าบริการขั้นต่ำจ่ายจะเรียกเก็บเฉพาะ request ข้อความและเสียงที่ใช้จริงเท่านั้น
น่าเสียดายที่ปัจจุบัน(MAY/2023)บริการนี้ยังไม่รองรับการใช้งานในภาษาไทย แต่ก็หวังว่าจะมีการรองรับในอนาคต
Languages Supported in Amazon Lex - Amazon Lex V1 (English)
2.) ตัวอย่างการใช้งาน
ตัวอย่างการใช้งานที่แนะนำใน เอกสารของ AWS มีดังต่อไปนี้
(1) Call center chatbot และ ระบบ Voice Assistant
การใช้ chatbot และ Voice Assistant ในงานคอลเซ็นเตอร์จะช่วยให้สามารถลดการทำงานของ agent ได้ โดยไม่จำเป็นต้องมี agent ตอบกลับลูกค้าจึงทำให้ลูกค้าบรรลุวัตถุประสงค์ได้ทั้งหมดหรือบางส่วน นอกจากนี้ยังสามารถนำ Amazon Lex มาใช้งานร่วมกับ Amazon Connect ได้อีกด้วย
(2) บอทสำหรับตอบคำถาม และ บอทข้อมูล
สามารถสร้างบอทที่ใช้ในการตอบกลับข้อมูลที่มีลักษณะเป็นคำถามซ้ำๆอย่างเช่น ผลคะแนนการแข่งขัน, พยากรณ์อากาศ หรือข่าวล่าสุดได้
(3) บอทแอปพลิเคชั่น
สามารถเพิ่ม UI ที่มีประสิทธิภาพให้กับแอปพลิเคชันของคุณ และยังสามารถผสานกับ Amazon Cognito เพื่อควบคุมการจัดการผู้ใช้ และ การซิงโครไนซ์ได้
(4) บอทสำหรับองค์กร
ด้วยการใช้งานแชทบอทสำหรับองค์กร จะช่วยลดความซับซ้อนในการทำงานและเพิ่มประสิทธิภาพในการทำงานพื้นฐานได้
3.) กลไก
กลไกของ Amazon Lex มีดังนี้
- แอปพลิเคชันจะรับข้อมูลผ่านการป้อนเสียงหรือข้อความ
- ข้อมูลที่รับเข้ามาผ่านการป้อนเสียงจะถูกแปลงเป็นข้อความโดยระบบการรับรู้เสียงอัตโนมัติ (ASR)
- ข้อความที่รับเข้ามาจะถูกตีความด้วยระบบการเข้าใจภาษาธรรมชาติ (NLU) เพื่อให้เข้าใจเนื้อหาของข้อมูล
- จะเชื่อมต่อข้อมูลให้ตรงกับ intent (เจตนา)
- เมื่อกำหนด intent แล้วระบบจะเรียกข้อมูลสำหรับการรวบรวม Slot (ค่าตัวแปร) จากตามการตั้งค่าที่กำหนดไว้ล่วงหน้า
- เพื่อรวบรวม Slot จะมีการส่งคำถามกลับไปยัง Clent เพื่อขอข้อมูลออกมาเป็นค่า Slot
- หากมีการตอบกลับมาในรูปแบบเสียงก็จะแปลงเสียงนั้นด้วย Amazon Polly
- หากมีการตั้งค่า Lambdas สำหรับการตรวจสอบแล้ว นักพัฒนาสามารถควบคุมอินพุต,การตอบกลับตามลำดับได้
- เมื่อรวบรวมข้อมูล intent และ slot แล้ว ระบบจะอยู่ในสถานะ Fulfillment
- หากมีการตั้งค่า Lambda ไว้ใน Fulfillment ก็จะสามารถดำเนินการตาม business logic ได้
- สามารถใช้งาน Lambda เพื่อเชื่อมโยงกับบริการอื่นๆของ AWS หรือ API ภายนอกได้อีกด้วย
ด้วยเทคโนโลยี Deep learning ไม่ว่าจะเป็นการประมวลผลภาษาธรรมชาติ (NLU)、การรับรู้เสียง (ASR) และการสร้างเสียงด้วยโปรแกรม Polly จะเรียนรู้จากบทสนทนาต่างๆ ผู้ใช้งานจะได้รับประสบการณ์ราวกับการสนทนากับมนุษย์จริงๆ
4.) คำศัพท์ที่สำคัญในบริการ
คำศัพท์ที่ใช้ใน Amazon Lex มีดังนี้
(1) BOT
สิ่งที่สร้างใน Amazon Lex คือบอท และสามารถสร้างบอทได้หลายตัว โดยบอทแต่ละตัวจะเป็นอิสระจากกันเปรียบได้ว่าบอทแต่ละตัวเป็นเหมือน "1 แอปพลิเคชั่น"
(2) INTENT
ถ้าแปลตรงๆอาจจะแปลเป็น "เจตนา" แต่ใน Amazon Lex อาจจะมีการใช้งานเหมือนกับการจัดการเป็น job
บอทสามารถกำหนดได้หลาย intent อย่างเช่น ในบอท "สั่งซื้อดอกไม้" อาจมีเพียง 1 intent คือ"สั่งซื้อดอกไม้" เท่านั้น
หากจะสร้างบอทสำหรับจองที่พักในการเดินทาง อาจต้องกำหนดหลาย intent เช่น "จองโรงแรม" "จัดเที่ยวบิน" และ "ทัวร์เสริม" เป็นต้น
โดยสามารถสร้าง intent ได้อย่างอิสระ และยังมี intent พร้อมใช้งานที่มาพร้อมกับ Amazon Lex เช่น
"cancel", "stop", "help" และ "from start" เป็นต้น
Built-in Intents - Amazon Lex V1 (English)
※ ใน Amazon Lex จะไม่สามารถใช้งาน Amazon.YesIntent และ AMAZON.NoIntent
(3) SLOT
slot เป็นเหมือนพารามิเตอร์ หรือ ตัวแปร ที่สามารถกำหนดได้หลาย slot ใน intent เดียวกัน
ใน Intent "สั่งซื้อดอกไม้" ตามตัวอย่าง จะมีกำหนด slot ไว้ 3 ตัวคือ "ชนิดของดอกไม้" "วันที่รับ" และ "เวลาที่รับ"
(4) SLOT TYPE
ใน SLOT จะมีข้อมูลประเภท type อยู่ ซึ่ง SLOT ที่อยู่ใน INTENT ในตัวอย่าง "การสั่งซื้อดอกไม้" แต่ละตัวจะมี SLOT TYPE ดังนี้:
・ชนิดของดอกไม้ FlowerTypes
・วันที่รับ AMAZON.DATE
・เวลาที่รับ AMAZON.TIME
จากรายละเอียดทางด้านบน AMAZON.DATE (วันที่) และ AMAZON.TIME (เวลา) จะเป็น Built-in Slot Types ที่มีอยู่แล้ว Amazon Lex
FlowerTypes เป็น Slot Type จะมีค่าที่สามารถเลือกได้ 3 ประเภท ได้แก่ "lily", "tulip", และ "rose"
ซึ่งผู้ใช้จะสามารถกำหนดเองได้
(5) CONTEXT
Amazon Lex มีสิ่งที่เรียกว่า CONTEXT ซึ่งช่วยในการควบคุมว่าภายในบอตนั้นๆ ในกรณีที่มีการกำหนด intent หลายรายการ ว่าสถานการณ์ไหน จะต้องใช้ intent แบบไหน
Announcing context management on Amazon Lex (English)
(6) Fulfillment
Fulfillment คือ สถานะที่ทุก SLOT ที่ถูกกำหนดไว้ใน intent นั้นๆได้รับการกรอกข้อมูลครบถ้วน โดยปกติจะทำงานเป็น Business Logic ตามวัตถุประสงค์ของ INTENT นั้นๆ
5. การใช้ Lambda function
Amazon Lex สามารถสร้างฟังก์ชัน AWS Lambda สำหรับใช้เป็นโค้ดฝังร่วมกับบอทได้
Using Lambda Functions (English)
การกำหนด AWS Lambda สามารถทำได้ใน 2 ส่วนดังนี้
- Lambda initialization and validation
- Fulfillment
(1) Lambda initialization and validation
การติ้กเลือกที่ Use a Lambda function for Initialization and validation code hook
จะเรียกใช้ Lambda ที่กำหนดค่าไว้ในทุกๆรอบ
"ทุกๆรอบ" ที่ว่าหมายถึงทุกครั้งที่ได้รับข้อมูลจากผู้ใช้ ดังนั้นผู้ใช้สามารถรับการตรวจสอบความถูกต้องและการได้รับประสบการณ์ UX ที่ดีขึ้นในทุกครั้งที่ลงข้อมูล
ตัวอย่างเช่น มีการสนทนาระหว่างผู้ใช้และบอท โดยมีการถามเกี่ยวกับเวลาเพื่อกรอกข้อมูลใน slot นั้นๆ โดยบอตจะถามคำถามเพื่อให้ผู้ใช้กรอกข้อมูลเวลาและเมื่อผู้ใช้ตอบคำถามแล้ว slot จะลงข้อมูลเข้าไป
บอท:จะมารับกี่โมงครับ?
ผู้ใช้งาน: 21:00 น.
บอท: 21:00 น.รับทราบครับ。
ในข้างต้นข้อมูลระบุไว้ว่าจะรับในเวลา 21:00 น. แต่ถ้าร้านปิดแล้วเวลา 19:00 น. จุดนี้จะเป็นปัญหาทันที
ดังนั้น คุณสามารถกำหนด Lambda สำหรับการตรวจสอบ โดยให้พิจารณาจากเวลาปัจจุบันแล้วตัดสินใจว่า " 21.00 " เป็นเวลาหลังปิดร้านแล้ว ให้ปิดการใช้งาน slot และตอบกลับไปว่า " วันนี้เปิดทำการถึง 19.00 จะมารับสินค้าเวลากี่โมง " ได้
สามารถกำหนดค่าของบอทได้บน management console เท่านั้น แต่จากตัวอย่างทางด้านบน หากจะสร้างบอทที่มีการประมวลผลที่ซับซ้อนกว่านี้ คิดว่าการสร้าง Lambda สำหรับการตรวจสอบเป็นสิ่งจำเป็นอย่างยิ่ง
(2) Fulfillment
ในการตั้งค่า Fulfillment เมื่อเลือกใช้ Use a Lambda for fulfillment จะเรียกใช้ Lambda ที่ตั้งค่าไว้ในขณะที่มีสถานะเป็น Fulfillment
Fulfillment จะเป็นเวลาที่บรรลุวัตถุประสงค์ของ intent นั้นๆ จึงทำให้ใน Lambda นี้สามารถกำหนดการเปลี่ยนแปลงไปยัง intent อื่นๆ หรือเป็น business logic
6.) Deploy
มีหลายวิธีในการปรับใช้บอทที่สร้างด้วย Amazon Lex
(1) CHANNEL
สามารถปรับใช้บอทที่สร้างขึ้นได้บนแพลตฟอร์มการส่งข้อความต่างๆ เช่น Facebook, Slack, และ Twilio ได้อย่างง่ายดาย
Deploying an Amazon Lex Bot on a Messaging Platform (English)
(2) API
ถึงแม้จะเป็นแพลตฟอร์มเฉพาะที่ไม่ได้มีการการตั้งค่า Channel ก็สามารถนำ API ที่มีให้บริการมาใช้งานได้
Amazon Lex Runtime Service (English)
ทางด้านล่างเป็นตัวอย่างการใช้งานในเว็บเบราว์เซอร์ที่เผยแพร่บน Github
aws-samples/aws-lex-web-ui (English)
(3) Amazon Connect
ใน Amazon Connect คุณสามารถฝัง Amazon Lex เข้าไปเพื่อใช้งานบอทได้
การทำงานของ IVR (Interactive Voice Response) อย่างเช่น "กรุณากด 1 สำหรับ ... หรือกด 2 สำหรับ ..." สามารถแทนที่ด้วยบอทได้ซึ่งจะช่วยเพิ่มประสิทธิภาพการใช้งานของผู้ใช้งานได้เป็นอย่างมาก
Add an Amazon Lex bot to Amazon Connect Components (English)
(4) AWS Amplify
AWS Amplify รองรับการสร้างบอทสำหรับการตอบคำถาม แล้วยังรองรับ UI ของบอทที่เป็น component อีกด้วย
AWS Amplify now supports AI-powered chatbots with Amazon Lex (English)
Amplify UI Components (English)
สุดท้ายนี้
เป็นยังไงกันบ้างครับกับ Amazon Lex ถ้าบริการนี้ใช้ร่วมกับ Amazon Connect จะทำให้ประสบการณ์การบริการ contact center ดีขึ้นมาก ยังไงหวังว่าจะเป็นประโยชน์กับเพื่อนๆนะครับ